OpenStack Havana中使用virt-install,建立CentOS虚拟机镜像
下载操作系统ISO安装镜像
# wget http://mirrors.grandcloud.cn/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-netinstall.iso
建立虚拟机
创建镜像盘
# qemu-img create -f qcow2 centos-6.5.qcow2 10G
启动安装过程
# virt-install --virt-type kvm --name centos-6.5 --ram 2048 \ --cdrom=CentOS-6.5-x86_64-netinstall.iso \ --disk centos-6.5.qcow2,format=qcow2 \ --network bridge=br100 \ --graphics vnc,listen=0.0.0.0 --noautoconsole \ --os-type=linux --os-variant=rhel6
执行后可以通过以下命令获取到vnc服务地址,然后就可以通过VNC链接并开始安装系统了。
# virsh domdisplay centos-6.5
在安装界面Install Method中选择“URL”,并填入http://mirrors.grandcloud.cn/centos/6.5/os/x86_64/
,继续安装就行了。安装过程中请使用DHCP,因为OpenStack默认是使用DHCP来分配地址的。
如果你使用virt-install遇到了问题,请查看:virt-insall
完成后可以使用如下命令查看配置:
# virsh dumpxml centos-6.5
使用virsh弹出cdrom,关闭主机,重新启动刚才创建的主机,如果你在操作安装界面选择了重启,则不需要执行前两步,直接执行virsh start centos-6.5
就可以了
# virsh attach-disk --type cdrom --mode readonly centos-6.5 "" hdc # virsh destroy centos-6.5 # virsh start centos-6.5
配置虚拟机
使用ssh登录虚拟机进行配置。
使用cloud-init
安装cloud-init后,密码登录被禁止,建立好的虚拟机的ssh只能通过Key登录,未指定Key是无法通过ssh登录的。
如果你不想安装cloud-init也可以,其实看来这个cloud-init是一个留给管理虚拟主机的后门,让管理主机可以直接登录虚拟机。
如果你想启用密码登录,编辑/etc/ssh/sshd_config使
PasswordAuthentication yes
然后,/etc/init.d/sshd restart就可以了。
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # yum install cloud-init
安装完成后通过/etc/cloud/cloud.cfg来配置,可以指定cloud-init所使用的用户,默认为cloud-user,它会自动创建,并且将会获取到OpenStack建立虚拟机时指定的Key,这样就可以通过控制节点和这里指定的用户登录虚拟机了;
启动参数配置
# echo "NOZEROCONF=yes" >> /etc/sysconfig/network
编辑/boot/grub/menu.lst
文件,以使nova console-log被支持;
serial --unit=0 --speed=115200 terminal --timeout=10 console serial # Edit the kernel line to add the console entries kernel ... console=tty0 console=ttyS0,115200n8
清理虚拟机配置
虚拟机完成后需要对配置信息进行清除,如:MAC地址等;需要删除/etc/udev/rules.d/70-persistent-net.rules及/etc/sysconfig/network-scripts/ifcfg-eth0中的MAC地址。70-persistent-net.rules会在虚拟机下次启动时自动产生。
使用virt-sysprep清理配置
注意:使用这种方式我好像没有成功过,请使用后面的“人工清理配置”方法。
关闭实例
# /sbin/shutdown -h now
安装virt-sysprep依赖包 - For Ubuntu
# apt-get install libguestfs-tools # apt-get install guestmount
清理虚拟机配置
# virt-sysprep -d centos-6.5
人工清理配置
在虚拟机上
# rf -f /etc/udev/rules.d/70-persistent-net.rules # vi /etc/sysconfig/network-scripts/ifcfg-eth0 注销掉HWADDR行
关闭虚拟机
# shutdown -h now
删除虚拟机安装信息
镜像制作完成后系统中不在需要这个虚拟机可以将相关信息删除掉。
# virsh undefine centos-6.5
如果你发现要修改虚拟机中的配置信息,可以使用virt-install重新启动虚拟机,注意,这次启动要使用--boot hd
# virt-install --virt-type kvm --name centos-6.5 --ram 2048 \ --disk centos-6.5.qcow2,format=qcow2 \ --network bridge=br100 \ --graphics vnc,listen=0.0.0.0 --noautoconsole \ --os-type=linux --os-variant=rhel6 \ --boot hd
完成后再次执行“清理虚拟机配置”及“删除虚拟机安装信息”两个部分。
上传Image到Glance服务器
完成后就可以上传到Image Service了。
glance image-create --name=CentOS-6.5-x86_64 --disk-format=qcow2 \ --container-format=bare --is-public=true < centos-6.5.qcow2